package 校招笔试.恒生电子;

import java.util.Scanner;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/3/31 17:56
 */
public class Main {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        int num = sc.nextInt();
        String s = String.valueOf(num);
        for(int i = num - 1;i > 10;i--){
            if(check(i)){
                System.out.println(i);
            }
        }
    }

    private static boolean check(int i) {
        String s = String.valueOf(i);
        int n = s.length();
        int sum = 0;
        for(int j = 0;j < n;j++){
            sum += Math.pow((s.charAt(j) - '0'),n);
        }
        return sum == i;
    }
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 根据输入计算最大收益
     * @param M double浮点型 初始资金
     * @param N int整型 历史价格天数
     * @param historyPrices double浮点型一维数组 N天历史价格
     * @param K int整型 最大允许交易次数
     * @return double浮点型
     */
    public double get_max_profit (double M, int N, double[] historyPrices, int K) {
        // write code here
        return 0;
    }
    double money = 0,ans = 0;
    public void recursion(int index,double rest,double[] his,int k){
        if(index == his.length || k == 0){
            return ;
        }
        double ans1 = 0 , ans2 = 0;
        // rest == 0
        if(rest ==0){
            // buy
            recursion(index + 1,money, his,k - 1);
            // skip
            recursion(index + 1,0,his,k);
        }
        else{
            // sell
            ans = Math.max(ans,money *= his[index]);
            recursion(index + 1,0,his,k - 1);
            //
            recursion(index + 1,rest,his,k);
        }

//        return Math.max(ans1,ans2);
    }

    public class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
         *
         * 根据输入计算最大收益
         * @param M double浮点型 初始资金
         * @param N int整型 历史价格天数
         * @param historyPrices double浮点型一维数组 N天历史价格
         * @param K int整型 最大允许交易次数
         * @return double浮点型
         */


    /*
    示例输入与输出注解
    输入： 10000,7,[1.0, 2.0, 1.0,2.0, 2.0, 3.0, 2.0],2
    输出：50000.00000
    注解：初始10000，第一天买入，第二天卖出，第三天买入，第六天卖出，最终盈利50000*/


        public double get_max_profit (double M, int N, double[] historyPrices, int K) {
            // write code here
            return 0;
        }
    }





}
